package Estruturas;

import java.util.*;


public class PixelWatershed extends Pixel {
   
    final static int ROTULO_INICIAL = -1;//rotulo inicial
    
    final static int MASCARA = -2;//mascara inicial
   
    final static int WATERSHED = 0;//rotulo para watershed
    
    final static int PIXELFANTASMA = -1;//pixel ficticio
    
    private int rotulo;// rotulo
   
    private int distancia;//diatancia

    private boolean minimo;

    public PixelWatershed(int nivelCinza, int x, int y, int width) {
        super(nivelCinza, x, y, width);
        distancia = 0;
        rotulo = ROTULO_INICIAL;
        minimo=false;
    }

    public void setNovaWater(){
        rotulo = -10;
    }
    public boolean isNovaWater(){
        return this.rotulo == -10;
    }

    public void SetMinimo(){
        this.minimo = true;
    }

    public boolean isMinimo(){
        return this.minimo;
    }

    public PixelWatershed(int rotulo) {
        this.rotulo = rotulo;
    }

    public PixelWatershed() {
    }
 
    public void addVizinho(PixelWatershed vizinho) {
	vizinhos.add(vizinho);//adiciona vizinhos
    }   

    public final int getX() {
	return coordenadas.x;
    } 

    public final int getY() {
	return coordenadas.y;
    }

    public void setRotulo(int ro_tulo) {
	this.rotulo = ro_tulo;
    }

    public void setRotuloROTULO_INICIAL() {
	rotulo = ROTULO_INICIAL;
    }

    public void setRotuloMASCARA() {
	rotulo = MASCARA;
    }
    
    public void setRotuloWATERSHED() {
	rotulo = WATERSHED;
    }
    
    public boolean isRotuloROTULO_INICIAL() {
	return rotulo == ROTULO_INICIAL;
    }
    public boolean isRotuloMASCARA() {
	return rotulo == MASCARA;
    }    
    public boolean isRotuloWATERSHED() {
	return rotulo == WATERSHED;
    }

    public int getRotulo() {
	return rotulo;
    }

    public void setDistancia(int dis_tancia) {
	distancia = dis_tancia;
    }

    public int getDistancia() {
	return distancia;
    }

    public boolean isFicticio() {
	return rotulo == PIXELFANTASMA;
    }

    public boolean allVizinhosWATERSHED() {
	for(int i=0 ; i<vizinhos.size() ; i++) {
	    PixelWatershed r = (PixelWatershed) vizinhos.get(i);
		    
	    if( !r.isRotuloWATERSHED() )
		return false;
	}
	return true;
    }

    public void setRotuloFicticio() {
       rotulo = PIXELFANTASMA;
    }
}
